﻿using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Tiscs.Practices.Web.Providers.Entities
{
    /// <summary>
    /// 会话状态实体。
    /// </summary>
    public class SessionEntity
    {
        /// <summary>
        /// 会话标识最大长度。
        /// </summary>
        public const int SessinoIdMaxLength = 88;

        /// <summary>
        /// 会话唯一标识。
        /// </summary>
        [Key]
        [StringLength(SessinoIdMaxLength)]
        public string SessionId { get; set; }

        /// <summary>
        /// 创建时间。
        /// </summary>
        public DateTime Created { get; set; }

        /// <summary>
        /// 过期时间。
        /// </summary>
        [Index]
        public DateTime Expires { get; set; }

        /// <summary>
        /// 锁定时间。
        /// </summary>
        public DateTime LockDate { get; set; }

        /// <summary>
        /// 锁定Cookie。
        /// </summary>
        public int LockCookie { get; set; }

        /// <summary>
        /// 是否已锁定。
        /// </summary>
        public bool Locked { get; set; }

        /// <summary>
        /// 会话数据。
        /// </summary>
        [MaxLength]
        public byte[] SessionItem { get; set; }

        /// <summary>
        /// 会话标记。
        /// </summary>
        public int Flags { get; set; }

        /// <summary>
        /// 超时时间。
        /// </summary>
        public int Timeout { get; set; }
    }
}
